var express = require('express');
var router = express.Router();

const AlipayFormData = require('alipay-sdk/lib/form').default
const alipaySdk = require('./alipay')

router.post("/pcpay", async (req, res) => {
  const { _id, integral, freight, title } = req.body.params

  // let middleFour = _id.substring(10, 14);
  // 创建 AlipayFormData 实例
  const formData = new AlipayFormData(); // 这里定义 formData

  const rondom = Math.floor(Math.random() * 1000000);
  

  formData.setMethod('get');
  // 通过addField增加参数
  // 在用户支付完成之后，支付宝服务器会根据传入的notify_url,以post请求的形式将支付结果作为参数通知到商户系统
  // 支付成功或失败都返回
  formData.addField('returnUrl', "http://localhost:3000/result");// 支付成功后跳转的地址
  formData.addField('bizContent', {
    out_trade_no: rondom,//订单号 64个字符以内 可包含字母、数字、下划线、且不能重复
    product_code: "FAST_INSTANT_TRADE_PAY",//销售产品码，与支付宝签约的产品码名称，仅支持FAST_INSTANT_TRADE_PAY
    total_amount: integral - freight,// 订单总金额
    subject: title,// 订单描述 
    body: title,// 商品描述
  })
  // 返回promise
  const result = await alipaySdk.exec(
    'alipay.trade.wap.pay',//统一收单下单并支付页面接口,
    {},//api请求的参数（包含 “公共请求参数”和“业务参数”）
    { formData: formData }// result为可以跳转支付链接的url
  )
  // res.json({ url: result })
  res.send({
    code: 200,
    result,
    _id,
  })
})

module.exports = router;
